<?php
/**
 * interface Lab9_Database_Interface
 * 数据库操作接口
 * @version 1.0
 */
interface Lab9_Database_interface
{
	/**
	 * @name selectById
	 * @desc 通过Id获取某条数据
	 * @param String $tableName 数据表的名称
	 * @param Int $id 待获取字段的Id值（可选参数，默认获取id为1的记录） 
	 * @param String $key 主键的字段名（可选参数，默认为'id'）
	 * @return array $row 存储由传入id值指定的记录的所有字段组成的关联数组
	 */
	public function selectById($tableName, $id=1, $key='id');
	
	/**
	 * @name select
	 * @desc 获取数据表中满足特定条件的所有记录
	 * @param String $tableName 数据表的名称
	 * @param array $condition 查询条件，为关联数组（默认为null，即不设条件进行查询）
	 * @param Int $recordBegin 查询的开始位置（默认为0，即从第一条记录开始获取）
	 * @param Int $recordLength 查询的数量（默认为0，即不限制查询的数量）
	 * @param String $sortCol 排序的条件（默认为null，即使用数据库默认顺序）
	 * @param Bool $desc 是否降序排序
	 * @return Array $row 由结果集组成的二维数组
	 */
	public function select($tableName, Array $condition=null,
						   $recordBegin=0, $recordLength=0, 
						   $sortCol=null, $desc=false);
	
	/**
	 * @name selectAll
	 * @desc 查询表中所有数据
	 * @param String $tableName 数据表的名称
	 * @return Array $row 由结果集组成的二维数组
	 */
	public function selectAll($tableName);
	
	/**
	 * @name selectBySql
	 * @desc 传入SQL语句，进行查询，并获取到查询结果
	 * @param String $query 查询的SQL语句
	 * @return Array $row 由查询结果组成的二维数组
	 */
	public function selectBySql($query);
	
	/**
	 * @name insert
	 * @desc 插入数据
	 * @param String $tableName
	 * @param array $records
	 * @return Bool $result 插入是否成功
	 */
	public function insert($tableName, Array $data);
	
	/**
	 * @name delete
	 * @desc 删除数据
	 * @param String $tableName 数据表名
	 * @param Array $condition 删除的条件组成的二维数组
	 * @return Int $count 删除的数据条数
	 */
	public function delete($tableName, Array $condition);
	
	/**
	 * @name update
	 * @desc 更新数据
	 * @param String $tableName
	 * @param Array $condition
	 * @param Array $newValue
	 * @return int $count 更新的数据条数
	 */
	public function update($tableName, Array $condition, Array $newValue);
}